// 管理用户相关数据并持久化
import { defineStore } from "pinia";
import {ref} from 'vue'
import { login } from '@/apis/use'
import { useCartStore } from "./cartStore";
import { mergeCart } from "@/apis/cart";
export const useUserStore=defineStore('user',()=>{
  // 定义管理用户数据的state
  const userInfo=ref({})
  // 定义获取接口数据的action
  const getUserInfo=async({account,password})=>{
    const cartStore=useCartStore()
    const res=await login({account,password})
    // console.log(res.result);
    userInfo.value=res.result
    // 登录的同时合并本地与数据库的购物车列表，将最新的购物车数据呈现给用户
    await mergeCart(cartStore.cartList.map((item)=>{
      return {
        skuId:item.skuId,
        selected:item.selected,
        count:item.count
      }
    }))
    // 重新获取购物车数据进行渲染
    cartStore.updateNewList()
  }
  // 退出时清空用户信息
  const clearUserInfo=()=>{
    userInfo.value={}
    // 清除购物车
    const cartStore=useCartStore()
    cartStore.clearCart()
  }
  // 以对象形式将state和action返回出去以便组件使用

  return {
    userInfo,
    getUserInfo,
    clearUserInfo
  }
},
{
  persist:true
}
)